#[derive(Debug)]
struct Rectangle {
    width: u32,
    height: u32,
}

// 方法的语法
impl Rectangle {
    fn area(&self) -> u32 {
        self.width * self.height
    }
}

impl Rectangle {
    fn can_hold(&self, rec: &Rectangle) -> bool {
        if self.width >= rec.width && self.height >= rec.height {
            true
        } else {
            false
        }
    }
}

fn main() {
    let scale = 3;
    let rectangle = Rectangle {
        width: 30,
        // width: dbg!(30 * scale),
        height: 50,
    };

    // println!("rectangle is {:#?} ", rectangle);

    // dbg!(&rectangle);

    println!(
        "The area of the rectangle is {} square pixels.",
        rectangle.area()
    );

    let rect1 = Rectangle {
        width: 30,
        height: 50,
    };
    let rect2 = Rectangle {
        width: 10,
        height: 40,
    };
    let rect3 = Rectangle {
        width: 60,
        height: 45,
    };

    println!("Can rect1 hold rect2 ? {}", rect1.can_hold(&rect2));
    println!("Can rect1 hold rect3 ? {}", rect1.can_hold(&rect3));
}
